package com.cskaoyan.javase.basic._3operator;

/**
 * 三目运算符
 * 三目（ternary）运算符，也被称之为三元运算符，即指的是需要三个操作数的运算符。
 * 它的语法是：
 * (条件表达式) ? 表达式1 : 表达式2;
 * 它具有以下特点：
 * 当条件表达式为true时，执行表达式1，否则执行表达式2。
 * 三目运算符的逻辑是：如果XXX就XXX否则XXX 就是if...else
 *
 * 三目运算符的最大特点就是，它一定会执行一个表达式， 所以它一定会有一个结果。
 * 正是由于它必须执行表达式。而语句不能放在表达式的位置，这极大的限制了三目运算符的使用。
 *
 *
 * 何时比较适合使用三目运算符呢？
 *
 * if...else从使用效果上来说，是可以完全替代三目运算符的。但是使用三目运算符，代码更加简洁、更加优雅并且逻辑更加直观，实测三目运算符的运算效率要比if稍微高一点。所以，如果能够使用三目运算符尽量使用它，而不是if(当然这种情况不多见)。
 *
 * @since 09:53
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo5 {
    public static void main(String[] args) {
        // 求两个数的最大值
        int num1 = 100;
        int num2 = 200;
        int max = (num1 > num2) ? num1 : num2;
        System.out.println("max = " + max);
        System.out.println((num1 > num2) ? num1 : num2);


        // 计算两个数的最大值，但是要求直接在控制台输出该最大值，而不是求最大值
        // (num1 > num2) ? sout
        if (num1 > num2) {
            System.out.println("num1是最大值，是" + num1);
        } else {
            System.out.println("num2是最大值，是" + num2);
        }

        // 求三个数的最大值
        int num3 = 300;
        /*
            在保证代码可读性的前提下
            尽量简化代码
            但是如果简化代码,导致代码可读性大幅下降,那就不要简化
         */
        int maxThreeNum = (num1 > num2) ? ((num1 > num3) ? num1 : num3) : ((num2 > num3) ? num2 : num3);
        System.out.println(maxThreeNum);
    }
}
